package com.example.UI;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.UI.database.MySQLDataHelper;
import com.example.UI.entity.User;
import com.example.UI.list.StudentArrayAdapter;
import com.example.ui.R;

import java.util.List;

/**
 * StudentActivity 类继承自 AppCompatActivity，用于展示学生列表和管理与学生相关的操作。
 */
public class StudentActivity extends AppCompatActivity {
    // 成员变量声明
    private Button mButtonStudents; // 学生按钮
    private Button mButtonCourses; // 课程按钮
    private Button mButtonProfile; // 个人资料按钮
    private ListView listView; // 用于显示学生列表的ListView
    private MySQLDataHelper dbHelper; // 数据库帮助类，用于操作用户数据库
    private List<User> users; // 存储从数据库获取的所有学生信息
    private StudentArrayAdapter userArrayAdapter; // 用于ListView的数据适配器

    /**
     * onCreate 方法是活动生命周期中的一个回调，当活动第一次创建时执行。
     * 这里进行了界面设置、数据库操作和按钮监听器的设置。
     *
     * @param savedInstanceState 包含先前活动的保存状态，可用于恢复状态。
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_student); // 设置活动的布局

        // 初始化成员变量
        dbHelper = new MySQLDataHelper(this); // 初始化数据库帮助类
        listView = findViewById(R.id.listView); // 获取ListView组件

        // 获取所有学生信息，并使用StudentArrayAdapter适配器绑定到ListView
        users = dbHelper.getAllUsers(); // 从数据库获取所有学生
        userArrayAdapter = new StudentArrayAdapter(this, users); // 创建适配器实例
        listView.setAdapter(userArrayAdapter); // 将适配器设置到ListView

        // 初始化底部导航按钮，并设置其点击事件监听器
        mButtonStudents = findViewById(R.id.buttonStudents);
        mButtonStudents.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 当学生按钮被点击时，显示Toast消息
                Toast.makeText(StudentActivity.this, "点击了学生按钮", Toast.LENGTH_SHORT).show();
            }
        });

        mButtonCourses = findViewById(R.id.buttonCourses);
        mButtonCourses.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 当课程按钮被点击时，启动CourseActivity
                Intent courseIntent = new Intent(StudentActivity.this, CourseActivity.class);
                startActivity(courseIntent);
            }
        });

        mButtonProfile = findViewById(R.id.buttonProfile);
        mButtonProfile.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 当个人资料按钮被点击时，获取当前学生的学号
                String studentId = getCurrentStudentId();
                if (studentId != null) {
                    // 如果学号存在，启动InformationActivity并传递学号
                    Intent profileIntent = new Intent(StudentActivity.this, InformationActivity.class);
                    profileIntent.putExtra("studentId", studentId);
                    startActivity(profileIntent);
                } else {
                    // 如果学号不存在，提示用户重新登录
                    Toast.makeText(StudentActivity.this, "未能获取学号，请重新登录", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    /**
     * getCurrentStudentId 方法用于从SharedPreferences获取当前学生的学号。
     *
     * @return 当前学生的学号，如果没有保存或找不到则返回null。
     */
    private String getCurrentStudentId() {
        SharedPreferences sharedPreferences = getSharedPreferences("user_session", MODE_PRIVATE);
        return sharedPreferences.getString("studentId", null); // 从SharedPreferences中获取学号
    }
}